@meowdown/core 0.18.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -65,6 +65,8 @@ Inline images (`![alt](src)`) stay literal text and render in place via a mark v
65
65
 
66
66
  Pasting a lone tweet or YouTube link can auto-embed it. `defineEmbedPaste()` (or `@meowdown/react`'s `embedPaste` prop) rewrites the pasted link to `![](url)` so it renders as an embed; one undo turns the embed back into the raw link. It is not part of `defineEditorExtension`; add it explicitly.
67
67
 
68
+ Pasting rich-text HTML from a browser (a bullet list, **bold**, a link, ...) converts it to Markdown so the formatting survives instead of arriving as plain text. `defineHTMLPaste()` (applied by default in `@meowdown/react`) rewrites the clipboard's `text/html` through the unified (rehype / remark) pipeline and reparses the Markdown with the editor's schema; meowdown's own clipboard (tagged `data-pm-slice`) and any paste landing in a code block are left to the default path. Going the other way, `defineMarkdownCopy()` serializes copied content to Markdown for the clipboard's `text/plain` flavor, so pasting into a plain-text field keeps list markers and block structure. Neither is part of `defineEditorExtension`; add them explicitly.
69
+
68
70
  Pressing Enter at the end of the document's first heading (the title line) can start a fresh empty bullet on the next line instead of a plain paragraph. `defineBulletAfterHeading()` binds this. It is not part of `defineEditorExtension`; add it explicitly.
69
71
 
70
72
  ## Re-exports
package/dist/index.d.ts CHANGED
@@ -259,6 +259,29 @@ declare function defineImageClickHandler(onClick: ImageClickHandler): PlainExten
259
259
  */
260
260
  declare function defineEmbedPaste(): PlainExtension;
261
261
  //#endregion
262
+ //#region src/extensions/html-paste.d.ts
263
+ /**
264
+ * Paste foreign rich-text HTML as meowdown Markdown. Rewrites the clipboard's
265
+ * `text/html` through `transformPastedHTML`: foreign HTML is converted to a
266
+ * Markdown string, reparsed into meowdown nodes (literal source text, no marks),
267
+ * and re-serialized to HTML so ProseMirror's own clipboard parser inserts it with
268
+ * the right open depths. `<strong>bold</strong>` thus lands as the text `**bold**`,
269
+ * which the inline-mark plugin renders.
270
+ */
271
+ declare function defineHTMLPaste(): PlainExtension;
272
+ //#endregion
273
+ //#region src/extensions/markdown-copy.d.ts
274
+ /**
275
+ * Serialize copied/cut content to Markdown for the clipboard's `text/plain`, so
276
+ * pasting meowdown content into a plain-text field yields real Markdown (`- `
277
+ * list markers, blank-line block separation) instead of bare `textContent`.
278
+ *
279
+ * The copied fragment is wrapped in a `doc` so the existing block serializer can
280
+ * walk it. A purely inline fragment (a partial-paragraph copy) does not fit
281
+ * `doc`'s `block+` content, so it falls back to the inline text.
282
+ */
283
+ declare function defineMarkdownCopy(): PlainExtension;
284
+ //#endregion
262
285
  //#region src/extensions/bullet-after-heading.d.ts
263
286
  /**
264
287
  * "Type a title, press Return, start bullets." When this extension is applied,
@@ -359,4 +382,4 @@ interface CheckRoundTripOptions {
359
382
  /** Classify how `markdown` survives the editor's parse-then-serialize round trip. */
360
383
  declare function checkRoundTrip(markdown: string, options?: CheckRoundTripOptions): RoundTripFidelity;
361
384
  //#endregion
362
- export { type CheckRoundTripOptions, type CodeBlockAttrs, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkClickHandler, type LinkClickPayload, type MarkMode, type MarkdownToDocOptions, type PlaceholderOptions, Priority, type RoundTripFidelity, type TypedEditor, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineMarkMode, definePlaceholder, defineReadonly, defineWikilinkClickHandler, docToMarkdown, markdownToDoc, withPriority };
385
+ export { type CheckRoundTripOptions, type CodeBlockAttrs, type DocToMarkdownOptions, EDITOR_KEY_BINDINGS, type EditorExtension, type ImageClickHandler, type ImageClickPayload, type ImageOptions, type LinkClickHandler, type LinkClickPayload, type MarkMode, type MarkdownToDocOptions, type PlaceholderOptions, Priority, type RoundTripFidelity, type TypedEditor, type WikilinkClickHandler, type WikilinkClickPayload, checkRoundTrip, codeBlockLanguages, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineMarkMode, defineMarkdownCopy, definePlaceholder, defineReadonly, defineWikilinkClickHandler, docToMarkdown, markdownToDoc, withPriority };
package/dist/index.js CHANGED
@@ -1,23 +1,25 @@
1
- import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as te,isApple as ne,isAtBlockStart as re,isTextSelection as ie,toggleNode as ae,union as h,unsetBlockType as oe,withPriority as se,withPriority as g,withSkipCodeBlock as ce}from"@prosekit/core";import{defineBlockquote as le}from"@prosekit/extensions/blockquote";import{defineCodeBlock as ue,defineCodeBlockHighlight as de}from"@prosekit/extensions/code-block";import{defineDoc as fe}from"@prosekit/extensions/doc";import{defineGapCursor as pe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as me}from"@prosekit/extensions/mod-click-prevention";import{defineText as he}from"@prosekit/extensions/text";import{defineVirtualSelection as ge}from"@prosekit/extensions/virtual-selection";import{Plugin as _,PluginKey as v,TextSelection as y}from"@prosekit/pm/state";import{Decoration as _e,DecorationSet as b}from"@prosekit/pm/view";import{LanguageDescription as ve}from"@codemirror/language";import{languages as ye}from"@codemirror/language-data";import{classHighlighter as be}from"@lezer/highlight";import{createParser as xe}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Se,defineHeadingInputRule as Ce,defineHeadingSpec as we}from"@prosekit/extensions/heading";import{defineHorizontalRule as Te}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Ee,Step as De,StepResult as x,Transform as Oe}from"@prosekit/pm/transform";import{Mark as ke}from"@prosekit/pm/model";import{GFM as Ae,parser as je}from"@lezer/markdown";import{once as Me}from"@ocavue/utils";import{defineInputRule as Ne}from"@prosekit/extensions/input-rule";import{defineListCommands as Pe,defineListDropIndicator as Fe,defineListKeymap as Ie,defineListPlugins as Le,defineListSerializer as Re,defineListSpec as ze,wrapInList as S}from"@prosekit/extensions/list";import{wrappingListInputRule as C}from"prosemirror-flat-list";import{defineParagraphCommands as Be,defineParagraphKeymap as Ve}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as He,defineTableCommands as Ue,defineTableDropIndicator as We,defineTableEditingPlugin as Ge,defineTableHeaderCellSpec as Ke,defineTableRowSpec as qe,defineTableSpec as Je,deleteTable as Ye,isCellSelection as Xe}from"@prosekit/extensions/table";import{closeHistory as Ze}from"@prosekit/pm/history";import{definePlaceholder as Qe}from"@prosekit/extensions/placeholder";import{defineReadonly as $e}from"@prosekit/extensions/readonly";function w(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const et=new Set([`mdMark`,`mdLinkUri`]),tt=new Set([`mdImageSource`,`mdWikilinkSource`]),nt=new v(`mark-mode`);function rt(e){return new _({key:nt,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>st(e):void 0,clipboardTextSerializer:e===`show`?void 0:ot}})}function it(e){return p(rt(e))}function at(e){return nt.getState(e)}function ot(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>tt.has(e.type.name))&&e.marks.some(e=>et.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
- `)}function st(e){let{selection:t}=e;if(!t.empty)return b.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return b.empty;let i=m(n,ee(e.schema,`mdPack`));return i?b.create(e.doc,[_e.inline(i.from,i.to,{class:`show`})]):b.empty}function T(e,t){let n=at(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function E(e,t,n){for(let r of n){let n=w(e,t,r);if(n)return n}}function D(e,t,n){let r=E(e,t,n);return r&&r.to===t?r:void 0}function O(e,t,n){let r=E(e,t,n);return r&&r.from===t?r:void 0}function k(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=E(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function ct(e,t){return y.create(e.doc,t.from,t.to)}function lt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=O(t,i.from,r);if(e)return n?.(t.tr.setSelection(ct(t,e))),!0;if(D(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(y.create(t.doc,i.from+1))),!0)}return!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.to))),!0):!1}}function ut(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=D(t,i.from,r);return e?(n?.(t.tr.setSelection(ct(t,e))),!0):!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.from))),!0):!1}}function dt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=D(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!O(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function ft(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=O(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!D(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function pt(e,t){return new _({key:new v(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=T(e,n);if(r.length===0)return;let i=k(n,r);if(i)return b.create(n.doc,[_e.inline(i.from,i.to,{class:t})])}}})}function mt({marks:e,selectedClass:n}){return h(g(c({ArrowRight:lt(e),ArrowLeft:ut(e),Backspace:dt(e),Delete:ft(e)}),t.high),p(pt(e,n)))}const A=new Map;async function ht(e){let t=ve.matchLanguageName(ye,e,!0);if(!t){A.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),A.set(e,null)}if(A.has(e))return;if(!n){A.set(e,null);return}let r=xe({parse:e=>n.language.parser.parse(e.content),highlighter:be});A.set(e,r)}const gt=e=>{let t=e.language?.trim();if(!t)return[];let n=A.get(t);return n?n(e):n===null?[]:ht(t)};function _t(){return de({parser:gt,nodeTypes:[`codeBlock`]})}function vt(){return d({type:`doc`,attr:`frontmatter`,default:null})}function yt(){return f({name:`heading`,whitespace:`pre`})}function bt(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function j(e){return ce(ae({type:`heading`,attrs:{level:e}}))}const xt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?oe()(e,t,n):!1;function St(){return c({"Mod-1":j(1),"Mod-2":j(2),"Mod-3":j(3),"Mod-4":j(4),"Mod-5":j(5),"Mod-6":j(6),Backspace:xt})}function Ct(){return h(we(),yt(),bt(),Ce(),Se(),St())}function wt(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function Tt(){return h(Te(),wt())}function Et(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Dt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>ke.fromJSON(e,t))]}var M=class e extends De{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return x.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new Oe(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new Oe(e),n.addMark(i,c,t));return!1})}return x.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Ot;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Ee(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Et)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Dt(t,e)))}};De.jsonID(`batchSetMark`,M);const Ot=new M([]),kt=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),At=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function jt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Mt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!kt.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!At.test(e))return!1;return!0}function Nt(e){return e===32||e===9||e===10||e===13}const Pt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,Ft=/[\s(*_~]/;function It(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function Lt(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Rt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&Lt(e,t,`)`)>Lt(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const zt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!It(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!Ft.test(r))return-1;let i=Pt.exec(e.slice(n,e.end));if(!i)return-1;let a=Rt(i[0]);return a===0||!Mt(jt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Bt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function Vt(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const Ht={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Bt(t))break;i||=Vt(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Ut={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Wt(e){return e.end}const N=je.configure([Ae,Ht,Ut,zt]),Gt=N.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Wt}]});function P(e){return N.parseInline(e,0)}function F(e,t,n=[]){for(let r of e)t(r)&&n.push(r),F(r.children,t,n);return n}function Kt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const I=Kt(N);function qt(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function Jt(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function Yt(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function Xt(){return u({name:`mdWikilinkView`,constructor:Yt()})}const L=new Map([[I.Emphasis,`mdEm`],[I.StrongEmphasis,`mdStrong`],[I.InlineCode,`mdCode`],[I.Strikethrough,`mdDel`],[I.EmphasisMark,`mdMark`],[I.CodeMark,`mdMark`],[I.LinkMark,`mdMark`],[I.StrikethroughMark,`mdMark`],[I.URL,`mdLinkUri`],[I.Hashtag,`mdTag`],[I.WikilinkMark,`mdMark`]]);function Zt(e,t){let n=P(t),r=[];return R(n,[],0,t.length,t,e,r),r}function Qt(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Mt(jt(e)))return`https://${e}`}function R(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&B(o,s,n.from,t);let e=n.type;if(e===I.Link)$t(n,t,i,a,o);else if(e===I.Image)en(n,t,i,a,o);else if(e===I.Wikilink)z(n,t,i,a,o);else if(e===I.URL){let e=Qt(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();B(o,n.from,n.to,[...t,r])}else{let r;e===I.Emphasis?r=`italic`:e===I.StrongEmphasis?r=`bold`:e===I.InlineCode?r=`code`:e===I.Strikethrough?r=`strike`:e===I.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=L.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?B(o,n.from,n.to,l):R(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&B(o,s,r,t)}function $t(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===I.LinkMark?(s++,s===2&&(a=t.from)):t.type===I.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;B(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===I.Wikilink){z(t,e,n,r,i),p=t.to;continue}let a=L.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?B(i,t.from,t.to,o):R(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&B(i,p,e.to,f)}function en(e,t,n,r,i){let a=e.children.find(e=>e.type===I.URL);if(!a){$t(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===I.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&B(i,m,t.from,p(m));let e=L.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?B(i,t.from,t.to,a):R(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&B(i,m,e.to,p(m))}function z(e,t,n,r,i){let{target:a,display:o}=Jt(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&B(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(B(i,t.from,l,[...u(t.from),e]),B(i,l,t.to,[...u(l),e])):B(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&B(i,d,e.to,u(d))}function B(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&qt(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const tn=Me(()=>{let e=fr().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),nn=Me(()=>r(tn())),rn=`meowdown_mark_builders`;function an(e){let t=e.cached[rn];if(t)return t;let r=n(e);return e.cached[rn]=r,r}const on=`inline-marks-applied`,sn=new WeakMap;let cn=0,ln=0;function un(e,t,n){let r=sn.get(e);if(r?ln++:(cn++,r=Zt(an(n),e.textContent),sn.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function dn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function fn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=un(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function pn(){return new _({key:new v(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(on))return null;let r=fn(n,dn(e,n));if(r.length===0)return null;let i=n.tr.step(new M(r));return i.setMeta(on,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(mn(e.state)),{}}})}function mn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function hn(){return p(pn())}function gn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function _n(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function vn(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function yn(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function bn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function xn(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function Sn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function Cn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function wn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Tn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function En(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function Dn(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function On(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function kn(){return h(vn(),yn(),bn(),xn(),Sn(),Cn(),wn(),Tn(),En(),Dn(),_n(),gn(),On())}function An(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const V={em:{node:I.Emphasis,delim:`*`},strong:{node:I.StrongEmphasis,delim:`**`},code:{node:I.InlineCode,delim:"`"},del:{node:I.Strikethrough,delim:`~~`}},jn=new Set([I.EmphasisMark,I.CodeMark,I.LinkMark,I.StrikethroughMark]);function H(e){return[e.children[0],e.children.at(-1)]}function Mn(e){let{type:t,children:n}=e;if(t===I.Emphasis||t===I.StrongEmphasis||t===I.Strikethrough)return[n[0].to,n.at(-1).from];if(t===I.Link||t===I.Image){let e=n.find((e,t)=>t>0&&e.type===I.LinkMark);return e?[n[0].to,e.from]:null}return null}function U(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=Mn(r);return i&&i[0]<=t&&n<=i[1]?U(r.children,t,n):U(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function Nn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return Nn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const W=e=>e===` `||e===` `;function Pn(e,t,n){for(;t<n&&W(e[t]);)t++;for(;n>t&&W(e[n-1]);)n--;return[t,n]}function Fn(e,t,n,r){let i=F(P(e),e=>e.type===r.node||jn.has(e.type));for(let r=t;r<n;r++)if(!W(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function In(e,t,n,r,i){let a=P(e),o=F(a,e=>e.type===r.node);return i?zn(e,o,t,n):Ln(e,a,o,t,n,r)}function Ln(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=U(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=H(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=Rn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function Rn(e,t,n,r,i){if(i.node!==I.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(An(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function zn(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=H(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=Nn(a.children.slice(1,-1),s,c);s>t.to&&W(e[s-1]);)s--;for(;c<o.from&&W(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function Bn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=P(e),o=F(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=H(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Vn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Vn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=Mn(n);return!e||t<e[0]||t>e[1]?!0:Vn(n.children,t)}return!1}function G(e){return(t,n)=>{if(t.selection.empty)return Hn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=Pn(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:Fn(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>In(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(y.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Hn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Bn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(y.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(y.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Un(){return o({toggleEm:()=>G(V.em),toggleStrong:()=>G(V.strong),toggleCode:()=>G(V.code),toggleDel:()=>G(V.del)})}function Wn(){return c({"Mod-b":G(V.strong),"Mod-i":G(V.em),"Mod-e":G(V.code),"Mod-Shift-x":G(V.del)})}function Gn(){return h(Un(),Wn())}function Kn(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function qn(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function Jn(e){return e===2||e===3||e===4}function Yn(){return d({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>Jn(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return Jn(t)?t:1}})}const Xn=[C(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),C(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),C(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),C(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function Zn(){return h(Xn.map(Ne))}function Qn(){return S({kind:`task`,marker:`+`})}function $n(){return S({kind:`task`,marker:null})}function er(){return o({wrapInCircleTask:Qn,wrapInSquareTask:$n})}function tr(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function nr(){return(e,t,n)=>{let r=tr(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},S(a)(e,t,n)}}function rr(){return(e,t,n)=>{let r=tr(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},S(a)(e,t,n)}}function ir(){return c({"Mod-Enter":nr(),"Mod-Shift-Enter":rr()})}function ar(){return h(ze(),Le(),Ie(),Pe(),Re(),Fe(),Zn(),ir(),Kn(),qn(),Yn(),er())}function or(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function sr(){return h(g(or(),t.highest),Be(),Ve())}const cr=(e,t)=>{let{selection:n}=e;return!Xe(n)||!n.isColSelection()||!n.isRowSelection()?!1:Ye(e,t)};function lr(){return g(c({Backspace:cr,Delete:cr}),t.high)}function ur(){return h(Je(),qe(),He(),Ke(),Ge({allowTableNodeSelection:!0}),Ue(),We(),lr())}function dr(){return h(sr(),fe(),vt(),he(),le(),ar(),Ct(),ur(),ue(),Tt(),kn(),_t(),hn(),Gn(),Xt(),mt({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),pe(),ge(),me())}function fr(){return dr()}function pr(e){let t;return p(new _({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ne?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const mr=new v(`meowdown-wikilink-click`);function hr(e,t){let n=w(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function gr(e){return pr({key:mr,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=hr(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const _r=new v(`meowdown-link-click`);function vr(e,t){let n=w(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function yr(e){return pr({key:_r,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=vr(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function br(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const xr=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,Sr=/\/status(?:es)?\/(\d+)/;function Cr(e){let t;try{t=new URL(e)}catch{return}if(xr.test(t.hostname))return Sr.exec(t.pathname)?.[1]}const wr=e=>{let t=Cr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=br()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),Tr(n),n}}};function Tr(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const Er=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Dr=/^(?:www\.)?youtu\.be$/i,Or=/^[\w-]{11}$/;function kr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Dr.test(t.hostname))n=t.pathname.slice(1);else if(Er.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!Or.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?Ar(r):void 0;return{videoId:n,startSeconds:i}}function Ar(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const jr=[e=>{let t=kr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},wr];function Mr(e){for(let t of jr){let n=t(e);if(n)return n}}function Nr(e){return/^https?:\/\//i.test(e)?e:void 0}function Pr(e,t,n){let r=Mr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??Nr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function Fr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=Pr(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function Ir(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Lr=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function Rr(e,t,n,r=Lr,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function zr(e){return new _({key:new v(`image-input`),props:{handlePaste:(t,n)=>{let r=Ir(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Rr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Ir(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(Rr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Br(e={}){return h(u({name:`mdImageView`,constructor:Fr(e)}),g(p(zr(e)),t.high))}const Vr=new v(`meowdown-image-click`);function Hr(e,t){let n=w(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Ur(e){return p(new _({key:Vr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Hr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const Wr=new v(`meowdown-embed-paste`);function Gr(e){let t=e.trim();if(!(!t||/\s/.test(t)))return Mr(t)?t:void 0}function Kr(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
- `)}function qr(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Ze(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Ze(i))}function Jr(){return p(new _({key:Wr,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=Kr(t,n);if(!i)return!1;let a=Gr(i);return a?(qr(e,a),!0):!1}}}))}const Yr=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(y.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Xr(){return g(c({Enter:Yr}),t.high)}const Zr={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},Qr=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),$r=ye.map(e=>e.name).filter(e=>!Qr.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function ei(e,t={}){let n=new ii;return t.frontmatter&&ti(e.attrs.frontmatter,n),ai(e,n),n.finish()}function ti(e,t){e!==null&&(t.write(`---`),t.write(`
1
+ import{Priority as e,Priority as t,createMarkBuilders as n,createNodeBuilders as r,defineBaseCommands as i,defineBaseKeymap as a,defineCommands as o,defineHistory as s,defineKeymap as c,defineMarkSpec as l,defineMarkView as u,defineNodeAttr as d,defineNodeSpec as f,definePlugin as p,getMarkRange as m,getMarkType as ee,getNodeType as te,isApple as ne,isAtBlockStart as re,isTextSelection as ie,toggleNode as ae,union as h,unsetBlockType as oe,withPriority as se,withPriority as g,withSkipCodeBlock as ce}from"@prosekit/core";import{defineBlockquote as le}from"@prosekit/extensions/blockquote";import{defineCodeBlock as ue,defineCodeBlockHighlight as de}from"@prosekit/extensions/code-block";import{defineDoc as fe}from"@prosekit/extensions/doc";import{defineGapCursor as pe}from"@prosekit/extensions/gap-cursor";import{defineModClickPrevention as me}from"@prosekit/extensions/mod-click-prevention";import{defineText as he}from"@prosekit/extensions/text";import{defineVirtualSelection as ge}from"@prosekit/extensions/virtual-selection";import{Plugin as _,PluginKey as v,TextSelection as y}from"@prosekit/pm/state";import{Decoration as _e,DecorationSet as b}from"@prosekit/pm/view";import{LanguageDescription as ve}from"@codemirror/language";import{languages as ye}from"@codemirror/language-data";import{classHighlighter as be}from"@lezer/highlight";import{createParser as xe}from"prosemirror-highlight/lezer";import{defineHeadingCommands as Se,defineHeadingInputRule as Ce,defineHeadingSpec as we}from"@prosekit/extensions/heading";import{defineHorizontalRule as Te}from"@prosekit/extensions/horizontal-rule";import{ReplaceStep as Ee,Step as De,StepResult as Oe,Transform as ke}from"@prosekit/pm/transform";import{DOMSerializer as Ae,Mark as je}from"@prosekit/pm/model";import{GFM as Me,parser as Ne}from"@lezer/markdown";import{once as x}from"@ocavue/utils";import{defineInputRule as Pe}from"@prosekit/extensions/input-rule";import{defineListCommands as Fe,defineListDropIndicator as Ie,defineListKeymap as Le,defineListPlugins as Re,defineListSerializer as ze,defineListSpec as Be,wrapInList as S}from"@prosekit/extensions/list";import{wrappingListInputRule as C}from"prosemirror-flat-list";import{defineParagraphCommands as Ve,defineParagraphKeymap as He}from"@prosekit/extensions/paragraph";import{defineTableCellSpec as Ue,defineTableCommands as We,defineTableDropIndicator as Ge,defineTableEditingPlugin as Ke,defineTableHeaderCellSpec as qe,defineTableRowSpec as Je,defineTableSpec as Ye,deleteTable as Xe,isCellSelection as Ze}from"@prosekit/extensions/table";import{closeHistory as Qe}from"@prosekit/pm/history";import $e from"rehype-parse";import et from"rehype-remark";import tt from"remark-gfm";import nt from"remark-stringify";import{unified as rt}from"unified";import{definePlaceholder as it}from"@prosekit/extensions/placeholder";import{defineReadonly as at}from"@prosekit/extensions/readonly";function w(e,t,n){let r=e.doc.content.size;if(t<0||t>r)return;let i=e.doc.resolve(t);if(!(!i.parent.isTextblock||i.parent.type.spec.code))return m(i,n)}const ot=new Set([`mdMark`,`mdLinkUri`]),st=new Set([`mdImageSource`,`mdWikilinkSource`]),ct=new v(`mark-mode`);function lt(e){return new _({key:ct,state:{init:()=>e,apply:(e,t)=>t},props:{attributes:{"data-mark-mode":e},decorations:e===`focus`?e=>pt(e):void 0,clipboardTextSerializer:e===`show`?void 0:ft}})}function ut(e){return p(lt(e))}function dt(e){return ct.getState(e)}function ft(e){let t=[];return e.content.forEach(e=>{let n=[];e.descendants(e=>!e.isText||!e.text?!0:(!e.marks.some(e=>st.has(e.type.name))&&e.marks.some(e=>ot.has(e.type.name))||n.push(e.text),!1)),t.push(n.join(``))}),t.join(`
2
+ `)}function pt(e){let{selection:t}=e;if(!t.empty)return b.empty;let n=t.$head,{parent:r}=n;if(!r.isTextblock||r.type.spec.code)return b.empty;let i=m(n,ee(e.schema,`mdPack`));return i?b.create(e.doc,[_e.inline(i.from,i.to,{class:`show`})]):b.empty}function T(e,t){let n=dt(t);return n?e.flatMap(e=>e.modes.includes(n)?[e.name]:[]):[]}function E(e,t,n){for(let r of n){let n=w(e,t,r);if(n)return n}}function D(e,t,n){let r=E(e,t,n);return r&&r.to===t?r:void 0}function O(e,t,n){let r=E(e,t,n);return r&&r.from===t?r:void 0}function k(e,t){let{from:n,to:r,empty:i}=e.selection;if(i)return;let a=E(e,n,t);return a&&a.from===n&&a.to===r?a:void 0}function mt(e,t){return y.create(e.doc,t.from,t.to)}function ht(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=O(t,i.from,r);if(e)return n?.(t.tr.setSelection(mt(t,e))),!0;if(D(t,i.from,r)){let e=t.doc.resolve(i.from);return i.from>=e.end()?!1:(n?.(t.tr.setSelection(y.create(t.doc,i.from+1))),!0)}return!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.to))),!0):!1}}function gt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!ie(t.selection))return!1;let i=t.selection;if(i.empty){let e=D(t,i.from,r);return e?(n?.(t.tr.setSelection(mt(t,e))),!0):!1}let a=k(t,r);return a?(n?.(t.tr.setSelection(y.create(t.doc,a.from))),!0):!1}}function _t(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=D(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!O(t,i,r)||i<=t.doc.resolve(i).start()?!1:(n?.(t.tr.delete(i-1,i)),!0)}}function vt(e){return(t,n)=>{let r=T(e,t);if(r.length===0||!t.selection.empty)return!1;let i=t.selection.from,a=O(t,i,r);return a?(n?.(t.tr.delete(a.from,a.to)),!0):!D(t,i,r)||i>=t.doc.resolve(i).end()?!1:(n?.(t.tr.delete(i,i+1)),!0)}}function yt(e,t){return new _({key:new v(`atomic-mark-selection-${t}`),props:{decorations:n=>{let r=T(e,n);if(r.length===0)return;let i=k(n,r);if(i)return b.create(n.doc,[_e.inline(i.from,i.to,{class:t})])}}})}function bt({marks:e,selectedClass:n}){return h(g(c({ArrowRight:ht(e),ArrowLeft:gt(e),Backspace:_t(e),Delete:vt(e)}),t.high),p(yt(e,n)))}const A=new Map;async function xt(e){let t=ve.matchLanguageName(ye,e,!0);if(!t){A.set(e,null);return}let n=t.support;if(!n)try{n=await t.load()}catch(t){console.error(`[meowdown] Failed to load language "${e}":`,t),A.set(e,null)}if(A.has(e))return;if(!n){A.set(e,null);return}let r=xe({parse:e=>n.language.parser.parse(e.content),highlighter:be});A.set(e,r)}const St=e=>{let t=e.language?.trim();if(!t)return[];let n=A.get(t);return n?n(e):n===null?[]:xt(t)};function Ct(){return de({parser:St,nodeTypes:[`codeBlock`]})}function wt(){return d({type:`doc`,attr:`frontmatter`,default:null})}function Tt(){return f({name:`heading`,whitespace:`pre`})}function Et(){return d({type:`heading`,attr:`setextUnderline`,default:null,toDOM:e=>e==null?null:[`data-setext-underline`,String(e)],parseDOM:e=>{let t=e.getAttribute(`data-setext-underline`);if(t==null)return null;let n=Number.parseInt(t,10);return Number.isSafeInteger(n)&&n>0?n:null}})}function j(e){return ce(ae({type:`heading`,attrs:{level:e}}))}const Dt=(e,t,n)=>re(e,n)?.parent.type.name===`heading`?oe()(e,t,n):!1;function Ot(){return c({"Mod-1":j(1),"Mod-2":j(2),"Mod-3":j(3),"Mod-4":j(4),"Mod-5":j(5),"Mod-6":j(6),Backspace:Dt})}function kt(){return h(we(),Tt(),Et(),Ce(),Se(),Ot())}function At(){return d({type:`horizontalRule`,attr:`marker`,default:null,toDOM:e=>e?[`data-hr-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-hr-marker`)})}function jt(){return h(Te(),At())}function Mt(e){let[t,n,r]=e;return[t,n,r.map(e=>e.toJSON())]}function Nt(e,t){let[n,r,i]=t;return[n,r,i.map(t=>je.fromJSON(e,t))]}var M=class e extends De{constructor(e){super(),this.chunks=e}apply(e){if(this.chunks.length===0)return Oe.ok(e);let t=e.content.size,n;for(let[r,i,a]of this.chunks){if(r>=i)continue;let o=Math.max(0,Math.min(r,t)),s=Math.max(o,Math.min(i,t));o>=s||e.nodesBetween(o,s,(t,r)=>{if(!t.isText)return!0;let i=Math.max(o,r),c=Math.min(s,r+t.nodeSize);if(i>=c)return!1;let l=t.marks;for(let t of l)t.isInSet(a)||(n??=new ke(e),n.removeMark(i,c,t));for(let t of a)t.isInSet(l)||(n??=new ke(e),n.addMark(i,c,t));return!1})}return Oe.ok(n?n.doc:e)}invert(e){if(this.chunks.length===0)return Pt;let t=this.chunks[0][0],n=this.chunks[0][1];for(let[,e]of this.chunks)e>n&&(n=e);let r=e.content.size,i=Math.max(0,Math.min(t,r)),a=Math.max(i,Math.min(n,r));return new Ee(i,a,e.slice(i,a),!1)}map(e){return null}toJSON(){return{stepType:`batchSetMark`,chunks:this.chunks.map(Mt)}}static fromJSON(t,n){let r=n.chunks;return new e(r.map(e=>Nt(t,e)))}};De.jsonID(`batchSetMark`,M);const Pt=new M([]),Ft=new Set([`com`,`br`,`net`,`jp`,`org`,`in`,`de`,`ru`,`it`,`fr`]),It=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;function Lt(e){let t=e.indexOf(`/`);return t===-1?e:e.slice(0,t)}function Rt(e){let t=e.split(`.`);if(t.length<2)return!1;let n=t[t.length-1].toLowerCase();if(!Ft.has(n)||t[t.length-2].length<3)return!1;for(let e of t)if(e.length>63||!It.test(e))return!1;return!0}function zt(e){return e===32||e===9||e===10||e===13}const Bt=/^[a-z0-9-]+(?:\.[a-z0-9-]+)+(?:\/[^\s<]*)?/i,Vt=/[\s(*_~]/;function Ht(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45}function Ut(e,t,n){let r=0;for(let i=0;i<t;i++)e[i]===n&&r++;return r}function Wt(e){let t=e.length;for(;;){let n=e[t-1];if(/[?!.,:*_~]/.test(n)||n===`)`&&Ut(e,t,`)`)>Ut(e,t,`(`))t--;else if(n===`;`){let n=/&(?:#\d+|#x[a-f\d]+|\w+);$/.exec(e.slice(0,t));if(!n)break;t=n.index}else break}return t}const Gt={parseInline:[{name:`BareAutolink`,before:`Link`,parse(e,t,n){if(!Ht(t)||e.hasOpenLink)return-1;let r=e.slice(n-1,n);if(r!==``&&!Vt.test(r))return-1;let i=Bt.exec(e.slice(n,e.end));if(!i)return-1;let a=Wt(i[0]);return a===0||!Rt(Lt(i[0].slice(0,a)))?-1:e.addElement(e.elt(`URL`,n,n+a))}}]};function Kt(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===45||e===95||e>127&&/[\p{L}\p{N}]/u.test(String.fromCharCode(e))}function qt(e){return e>=65&&e<=90||e>=97&&e<=122||e>127&&/\p{L}/u.test(String.fromCharCode(e))}const Jt={defineNodes:[{name:`Hashtag`}],parseInline:[{name:`Hashtag`,parse(e,t,n){if(t!==35||!/\s|^$/.test(e.slice(n-1,n)))return-1;let r=n+1,i=!1;for(;r<e.end;){let t=e.char(r);if(!Kt(t))break;i||=qt(t),r++}return i?e.addElement(e.elt(`Hashtag`,n,r)):-1}}]},Yt={defineNodes:[{name:`Wikilink`},{name:`WikilinkMark`}],parseInline:[{name:`Wikilink`,before:`Link`,parse(e,t,n){if(t!==91||e.char(n+1)!==91)return-1;let r=!1;for(let t=n+2;t<e.end-1;t++){let i=e.char(t);if(i===93){if(e.char(t+1)!==93||!r)return-1;let i=t+2;return e.addElement(e.elt(`Wikilink`,n,i,[e.elt(`WikilinkMark`,n,n+2),e.elt(`WikilinkMark`,t,i)]))}if(i===91||i===10)return-1;i!==32&&i!==9&&(r=!0)}return-1}}]};function Xt(e){return e.end}const N=Ne.configure([Me,Jt,Yt,Gt]),Zt=N.configure({parseInline:[{name:`SkipInline`,before:`Escape`,parse:Xt}]});function P(e){return N.parseInline(e,0)}function F(e,t,n=[]){for(let r of e)t(r)&&n.push(r),F(r.children,t,n);return n}function Qt(e){let t={};for(let n of e.nodeSet.types)t[n.name]=n.id;return t}const I=Qt(N);function $t(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!e[n].eq(t[n]))return!1;return!0}function en(e){let t=e.replace(/^\[\[/,``).replace(/\]\]$/,``),n=t.indexOf(`|`);return n<0?{target:t.trim(),display:``}:{target:t.slice(0,n).trim(),display:t.slice(n+1).trim()}}function tn(){return e=>{let t=e.attrs,n=document.createElement(`span`);n.className=`md-wikilink-view`;let r=document.createElement(`span`);n.appendChild(r);let i=document.createElement(`span`);return i.className=`md-wikilink-label`,i.contentEditable=`false`,i.dataset.testid=`wikilink`,i.textContent=t.display||t.target,n.appendChild(i),{dom:n,contentDOM:r,ignoreMutation:e=>!r.contains(e.target)}}}function nn(){return u({name:`mdWikilinkView`,constructor:tn()})}const L=new Map([[I.Emphasis,`mdEm`],[I.StrongEmphasis,`mdStrong`],[I.InlineCode,`mdCode`],[I.Strikethrough,`mdDel`],[I.EmphasisMark,`mdMark`],[I.CodeMark,`mdMark`],[I.LinkMark,`mdMark`],[I.StrikethroughMark,`mdMark`],[I.URL,`mdLinkUri`],[I.Hashtag,`mdTag`],[I.WikilinkMark,`mdMark`]]);function rn(e,t){let n=P(t),r=[];return R(n,[],0,t.length,t,e,r),r}function an(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return e;if(/^[^\s@]+@[^\s@]+$/.test(e))return`mailto:${e}`;if(/^www\./i.test(e)||Rt(Lt(e)))return`https://${e}`}function R(e,t,n,r,i,a,o){let s=n;for(let n of e){n.from>s&&z(o,s,n.from,t);let e=n.type;if(e===I.Link)on(n,t,i,a,o);else if(e===I.Image)sn(n,t,i,a,o);else if(e===I.Wikilink)cn(n,t,i,a,o);else if(e===I.URL){let e=an(i.slice(n.from,n.to)),r=e?a.mdLinkText.create({href:e}):a.mdLinkUri.create();z(o,n.from,n.to,[...t,r])}else{let r;e===I.Emphasis?r=`italic`:e===I.StrongEmphasis?r=`bold`:e===I.InlineCode?r=`code`:e===I.Strikethrough?r=`strike`:e===I.Autolink&&(r=`autolink`);let s=r?[...t,a.mdPack.create({key:r})]:t,c=L.get(e),l=c?[...s,a[c].create()]:s;n.children.length===0?z(o,n.from,n.to,l):R(n.children,l,n.from,n.to,i,a,o)}s=n.to}s<r&&z(o,s,r,t)}function on(e,t,n,r,i){let a=-1,o=null,s=0;for(let t of e.children)t.type===I.LinkMark?(s++,s===2&&(a=t.from)):t.type===I.URL&&o===null&&(o=t);let c=o?n.slice(o.from,o.to):``,l=c?r.mdLinkText.create({href:c}):null,u=e=>a>=0&&e<a&&l!==null,d=r.mdPack.create({key:`link_${c}`}),f=[...t,d],p=e.from;for(let t of e.children){if(t.from>p){let e=u(p)?[...f,l]:f;z(i,p,t.from,e)}let e=u(t.from)?[...f,l]:f;if(t.type===I.Wikilink){cn(t,e,n,r,i),p=t.to;continue}let a=L.get(t.type),o=a?[...e,r[a].create()]:e;t.children.length===0?z(i,t.from,t.to,o):R(t.children,o,t.from,t.to,n,r,i),p=t.to}p<e.to&&z(i,p,e.to,f)}function sn(e,t,n,r,i){let a=e.children.find(e=>e.type===I.URL);if(!a){on(e,t,n,r,i);return}let o=e.children.filter(e=>e.type===I.LinkMark),s=n.slice(a.from,a.to),c=o.length>=2?n.slice(o[0].to,o[1].from):``,l=r.mdImageSource.create({src:s,alt:c}),u=r.mdImageView.create({src:s,alt:c}),d=r.mdPack.create({key:`image_${s}`}),f=e.to-1,p=e=>e>=f?[...t,d,l,u]:[...t,d,l],m=e.from;for(let t of e.children){t.from>m&&z(i,m,t.from,p(m));let e=L.get(t.type),a=e?[...p(t.from),r[e].create()]:p(t.from);t.children.length===0?z(i,t.from,t.to,a):R(t.children,a,t.from,t.to,n,r,i),m=t.to}m<e.to&&z(i,m,e.to,p(m))}function cn(e,t,n,r,i){let{target:a,display:o}=en(n.slice(e.from,e.to)),s=r.mdWikilinkSource.create({target:a}),c=r.mdWikilinkView.create({target:a,display:o}),l=e.to-1,u=e=>e>=l?[...t,s,c]:[...t,s],d=e.from;for(let t of e.children){t.from>d&&z(i,d,t.from,u(d));let e=r.mdMark.create();t.from<l&&t.to>l?(z(i,t.from,l,[...u(t.from),e]),z(i,l,t.to,[...u(l),e])):z(i,t.from,t.to,[...u(t.from),e]),d=t.to}d<e.to&&z(i,d,e.to,u(d))}function z(e,t,n,r){if(t>=n)return;let i=e.at(-1);if(i&&i[1]===t&&$t(i[2],r)){e[e.length-1]=[i[0],n,i[2]];return}e.push([t,n,r])}const ln=x(()=>{let e=xr().schema;if(e==null)throw Error(`Unexpected empty schema`);return e}),un=x(()=>r(ln())),dn=`meowdown_mark_builders`;function fn(e){let t=e.cached[dn];if(t)return t;let r=n(e);return e.cached[dn]=r,r}const pn=`meowdown_node_builders`;function mn(e){let t=e.cached[pn];if(t)return t;let n=r(e);return e.cached[pn]=n,n}const hn=`inline-marks-applied`,gn=new WeakMap;let _n=0,vn=0;function yn(e,t,n){let r=gn.get(e);if(r?vn++:(_n++,r=rn(fn(n),e.textContent),gn.set(e,r)),t===0)return r;let i=[];for(let[e,n,a]of r)i.push([e+t,n+t,a]);return i}function bn(e,t){let n=1/0,r=-1/0;for(let t of e)for(let e of t.mapping.maps)e.forEach((e,t,i,a)=>{i<n&&(n=i),a>r&&(r=a)});let i=t.doc.content.size;return n>r?{from:0,to:i}:{from:Math.max(0,n),to:Math.min(i,r)}}function xn(e,t){let n=[];return e.doc.nodesBetween(t.from,t.to,(t,r)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;if(t.childCount===0)return!1;let i=yn(t,r+1,e.schema);return i.length>0&&n.push(...i),!1}),n}function Sn(){return new _({key:new v(`inline-mark`),appendTransaction(e,t,n){for(let t of e)if(t.getMeta(hn))return null;let r=xn(n,bn(e,n));if(r.length===0)return null;let i=n.tr.step(new M(r));return i.setMeta(hn,!0),i.setMeta(`addToHistory`,!1),i},view(e){return e.dispatch(Cn(e.state)),{}}})}function Cn(e){return e.tr.setMeta(`inline-marks-trigger`,!0)}function wn(){return p(Sn())}function Tn(){return l({name:`mdImageView`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-anchor`},0],parseDOM:[{tag:`span.md-image-anchor`}]})}function En(){return l({name:`mdImageSource`,inclusive:!1,attrs:{src:{default:``},alt:{default:``}},toDOM:()=>[`span`,{class:`md-image-source`},0],parseDOM:[{tag:`span.md-image-source`}]})}function Dn(){return l({name:`mdMark`,inclusive:!1,toDOM:()=>[`span`,{class:`md-mark`},0],parseDOM:[{tag:`span.md-mark`}]})}function On(){return l({name:`mdEm`,toDOM:()=>[`em`,0],parseDOM:[{tag:`em`}]})}function kn(){return l({name:`mdStrong`,toDOM:()=>[`strong`,0],parseDOM:[{tag:`strong`}]})}function An(){return l({name:`mdCode`,toDOM:()=>[`code`,0],parseDOM:[{tag:`code`}]})}function jn(){return l({name:`mdLinkText`,inclusive:!1,attrs:{href:{default:``}},toDOM:e=>[`a`,{class:`md-link`,href:e.attrs.href},0],parseDOM:[{tag:`a`,getAttrs:e=>({href:e.getAttribute(`href`)??``})}]})}function Mn(){return l({name:`mdLinkUri`,inclusive:!1,toDOM:()=>[`span`,{class:`md-link-uri`},0],parseDOM:[{tag:`span.md-link-uri`}]})}function Nn(){return l({name:`mdDel`,toDOM:()=>[`del`,0],parseDOM:[{tag:`del`}]})}function Pn(){return l({name:`mdTag`,toDOM:()=>[`span`,{class:`md-tag`},0],parseDOM:[{tag:`span.md-tag`}]})}function Fn(){return l({name:`mdWikilinkSource`,inclusive:!1,attrs:{target:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-source`},0],parseDOM:[{tag:`span.md-wikilink-source`}]})}function In(){return l({name:`mdWikilinkView`,inclusive:!1,attrs:{target:{default:``},display:{default:``}},toDOM:()=>[`span`,{class:`md-wikilink-anchor`},0],parseDOM:[{tag:`span.md-wikilink-anchor`}]})}function Ln(){return l({name:`mdPack`,excludes:``,inclusive:!1,attrs:{key:{default:``}},toDOM:e=>[`span`,{class:`md-pack`,"data-key":e.attrs.key},0],parseDOM:[{tag:`span.md-pack`}]})}function Rn(){return h(Dn(),On(),kn(),An(),jn(),Mn(),Nn(),Pn(),Fn(),In(),En(),Tn(),Ln())}function zn(e,t=0){let n=t,r=0;for(let t=0;t<e.length;t++)e.charCodeAt(t)===96?(r++,r>n&&(n=r)):r=0;return n}const B={em:{node:I.Emphasis,delim:`*`},strong:{node:I.StrongEmphasis,delim:`**`},code:{node:I.InlineCode,delim:"`"},del:{node:I.Strikethrough,delim:`~~`}},Bn=new Set([I.EmphasisMark,I.CodeMark,I.LinkMark,I.StrikethroughMark]);function V(e){return[e.children[0],e.children.at(-1)]}function Vn(e){let{type:t,children:n}=e;if(t===I.Emphasis||t===I.StrongEmphasis||t===I.Strikethrough)return[n[0].to,n.at(-1).from];if(t===I.Link||t===I.Image){let e=n.find((e,t)=>t>0&&e.type===I.LinkMark);return e?[n[0].to,e.from]:null}return null}function H(e,t,n){for(let r of e){if(r.to<=t||r.from>=n||t<=r.from&&r.to<=n)continue;let i=Vn(r);return i&&i[0]<=t&&n<=i[1]?H(r.children,t,n):H(e,Math.min(t,r.from),Math.max(n,r.to))}return[t,n]}function Hn(e,t,n){for(let r of e)if(!(r.to<=t||r.from>=n)&&(t>r.from||r.to>n))return Hn(e,Math.min(t,r.from),Math.max(n,r.to));return[t,n]}const U=e=>e===` `||e===` `;function Un(e,t,n){for(;t<n&&U(e[t]);)t++;for(;n>t&&U(e[n-1]);)n--;return[t,n]}function Wn(e,t,n,r){let i=F(P(e),e=>e.type===r.node||Bn.has(e.type));for(let r=t;r<n;r++)if(!U(e[r])&&i.every(e=>!(e.from<=r&&r<e.to)))return!1;return!0}function Gn(e,t,n,r,i){let a=P(e),o=F(a,e=>e.type===r.node);return i?Jn(e,o,t,n):Kn(e,a,o,t,n,r)}function Kn(e,t,n,r,i,a){for(let e=0;e!==i-r;){e=i-r,[r,i]=H(t,r,i);for(let e of n)e.to===r&&(r=e.from),e.from===i&&(i=e.to)}let o=[];for(let e of n)if(r<=e.from&&e.to<=i){let[t,n]=V(e);o.push({from:t.from,to:t.to,insert:``}),o.push({from:n.from,to:n.to,insert:``})}let[s,c]=qn(e,r,i,o,a);return o.push({from:r,to:r,insert:s},{from:i,to:i,insert:c}),o}function qn(e,t,n,r,i){if(i.node!==I.InlineCode)return[i.delim,i.delim];let a=e.slice(t,n);for(let e of[...r].sort((e,t)=>t.from-e.from))a=a.slice(0,e.from-t)+a.slice(e.to-t);let o="`".repeat(zn(a)+1),s=a.startsWith("`")||a.endsWith("`")?` `:``;return[o+s,s+o]}function Jn(e,t,n,r){let i=[];for(let a of t){if(a.to<=n||a.from>=r)continue;let[t,o]=V(a),s=Math.max(n,t.to),c=Math.min(r,o.from);for(s>=c&&([s,c]=[t.to,o.from]),[s,c]=Hn(a.children.slice(1,-1),s,c);s>t.to&&U(e[s-1]);)s--;for(;c<o.from&&U(e[c]);)c++;s>t.to?i.push({from:s,to:s,insert:e.slice(o.from,o.to)}):i.push({from:t.from,to:t.to,insert:``}),c<o.from?i.push({from:c,to:c,insert:e.slice(t.from,t.to)}):i.push({from:o.from,to:o.to,insert:``})}return i}function Yn(e,t,n){let{delim:r}=n,i=r.length;if(e.slice(t-i,t)===r&&e.startsWith(r,t)&&e[t-i-1]!==r[0]&&e[t+i]!==r[0])return{kind:`unwrap`,from:t-i,to:t+i};let a=P(e),o=F(a,e=>e.type===n.node).findLast(e=>e.from<=t&&t<=e.to);if(o){let[e,n]=V(o);return{kind:`move`,pos:t===o.from?e.to:t===o.to?n.from:o.to}}return Xn(a,t)||e[t-1]===r[0]||e[t]===r[0]?null:{kind:`insert`,pos:t}}function Xn(e,t){for(let n of e)if(n.from<t&&t<n.to){let e=Vn(n);return!e||t<e[0]||t>e[1]?!0:Xn(n.children,t)}return!1}function W(e){return(t,n)=>{if(t.selection.empty)return Zn(e,t,n);let{from:r,to:i,anchor:a,head:o}=t.selection,s=[];t.doc.nodesBetween(r,i,(t,n)=>{if(t.type.spec.code)return!1;if(!t.isTextblock)return!0;let a=t.textContent,o=n+1,[c,l]=Un(a,Math.max(r-o,0),Math.min(i-o,a.length));return c<l&&s.push({text:a,base:o,from:c,to:l,active:Wn(a,c,l,e)}),!1});let c=s.length>0&&s.every(e=>e.active),l=s.filter(e=>c||!e.active).flatMap(t=>Gn(t.text,t.from,t.to,e,c).map(e=>({from:e.from+t.base,to:e.to+t.base,insert:e.insert})));if(l.length===0)return!1;if(n){let e=t.tr;l.sort((e,t)=>t.from-e.from||t.to-e.to);for(let t of l)t.insert?e.insertText(t.insert,t.from,t.to):e.delete(t.from,t.to);e.setSelection(y.create(e.doc,e.mapping.map(a,a<=o?1:-1),e.mapping.map(o,o<a?1:-1))),n(e.scrollIntoView())}return!0}}function Zn(e,t,n){let{$from:r}=t.selection,i=r.parent;if(!i.isTextblock||i.type.spec.code)return!1;let a=Yn(i.textContent,r.parentOffset,e);if(!a)return!1;if(n){let i=r.start(),o=t.tr;a.kind===`unwrap`&&o.delete(i+a.from,i+a.to),a.kind===`move`&&o.setSelection(y.create(o.doc,i+a.pos)),a.kind===`insert`&&(o.insertText(e.delim+e.delim,i+a.pos),o.setSelection(y.create(o.doc,i+a.pos+e.delim.length))),n(o.scrollIntoView())}return!0}function Qn(){return o({toggleEm:()=>W(B.em),toggleStrong:()=>W(B.strong),toggleCode:()=>W(B.code),toggleDel:()=>W(B.del)})}function $n(){return c({"Mod-b":W(B.strong),"Mod-i":W(B.em),"Mod-e":W(B.code),"Mod-Shift-x":W(B.del)})}function er(){return h(Qn(),$n())}function tr(){return d({type:`list`,attr:`marker`,default:null,splittable:!0,toDOM:e=>e===`)`||e===`*`||e===`+`?[`data-list-marker`,e]:null,parseDOM:e=>{let t=e.getAttribute(`data-list-marker`);return t===`)`||t===`*`||t===`+`?t:null}})}function nr(){return d({type:`list`,attr:`taskMarker`,default:null,splittable:!0,toDOM:e=>e===`X`?[`data-list-task-marker`,e]:null,parseDOM:e=>e.getAttribute(`data-list-task-marker`)===`X`?`X`:null})}function rr(e){return e===2||e===3||e===4}function ir(){return d({type:`list`,attr:`markerGap`,default:1,splittable:!0,toDOM:e=>rr(e)?[`data-list-marker-gap`,String(e)]:null,parseDOM:e=>{let t=Number.parseInt(e.getAttribute(`data-list-marker-gap`)??``,10);return rr(t)?t:1}})}const ar=[C(/^\s?([*-])\s$/,{kind:`bullet`,collapsed:!1}),C(/^\s?(\d+)\.\s$/,({match:e})=>{let t=e[1],n=t?parseInt(t,10):void 0;return{kind:`ordered`,collapsed:!1,order:n&&n>=2&&Number.isSafeInteger(n)?n:null}}),C(/^\s?\[([\sXx]?)]\s$/,({match:e})=>({kind:`task`,checked:[`x`,`X`].includes(e[1]),collapsed:!1})),C(/^\s?\+\s$/,{kind:`task`,marker:`+`,checked:!1,collapsed:!1})];function or(){return h(ar.map(Pe))}function sr(){return S({kind:`task`,marker:`+`})}function cr(){return S({kind:`task`,marker:null})}function lr(){return o({wrapInCircleTask:sr,wrapInSquareTask:cr})}function ur(e){let{$from:t}=e.selection;for(let e=t.depth;e>0;e--){let n=t.node(e);if(n.type.name===`list`)return n.attrs}return null}function dr(){return(e,t,n)=>{let r=ur(e),i=r?.kind===`task`&&r.marker!==`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:r?.marker??null,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:null,checked:!1},S(a)(e,t,n)}}function fr(){return(e,t,n)=>{let r=ur(e),i=r?.kind===`task`&&r.marker===`+`,a;return a=i&&!r?.checked?{kind:`task`,marker:`+`,checked:!0}:i&&r?.checked?{kind:`bullet`,marker:null,checked:!1}:{kind:`task`,marker:`+`,checked:!1},S(a)(e,t,n)}}function pr(){return c({"Mod-Enter":dr(),"Mod-Shift-Enter":fr()})}function mr(){return h(Be(),Re(),Le(),Fe(),ze(),Ie(),or(),pr(),tr(),nr(),ir(),lr())}function hr(){return f({name:`paragraph`,content:`inline*`,group:`block`,whitespace:`pre`,parseDOM:[{tag:`p`}],toDOM(){return[`p`,0]}})}function gr(){return h(g(hr(),t.highest),Ve(),He())}const _r=(e,t)=>{let{selection:n}=e;return!Ze(n)||!n.isColSelection()||!n.isRowSelection()?!1:Xe(e,t)};function vr(){return g(c({Backspace:_r,Delete:_r}),t.high)}function yr(){return h(Ye(),Je(),Ue(),qe(),Ke({allowTableNodeSelection:!0}),We(),Ge(),vr())}function br(){return h(gr(),fe(),wt(),he(),le(),mr(),kt(),yr(),ue(),jt(),Rn(),Ct(),wn(),er(),nn(),bt({marks:[{name:`mdImageSource`,modes:[`hide`]},{name:`mdWikilinkSource`,modes:[`hide`,`focus`,`show`]}],selectedClass:`md-atomic-selected`}),a(),i(),s(),pe(),ge(),me())}function xr(){return br()}function Sr(e){let t;return p(new _({key:e.key,props:{handleDOMEvents:{mousedown:e=>{let{from:n,to:r,empty:i}=e.state.selection;return t={from:n,to:r,empty:i},!1}},handleClick:(n,r,i)=>{if(!i.target?.closest?.(e.selector))return!1;let a=e.findHitAt(n.state,r);return!a||!(ne?i.metaKey:i.ctrlKey)&&t?.empty&&t.from>=a.from&&t.to<=a.to?!1:(e.preventDefault&&i.preventDefault(),e.onClick(a.payload,i),!0)}}}))}const Cr=new v(`meowdown-wikilink-click`);function wr(e,t){let n=w(e,t,`mdWikilinkSource`);if(!n)return;let{target:r}=n.mark.attrs;return{from:n.from,to:n.to,target:r}}function Tr(e){return Sr({key:Cr,selector:`.md-wikilink-label, .md-wikilink-source`,preventDefault:!1,findHitAt:(e,t)=>{let n=wr(e,t);return n?{from:n.from,to:n.to,payload:n.target}:void 0},onClick:(t,n)=>e({target:t,event:n})})}const Er=new v(`meowdown-link-click`);function Dr(e,t){let n=w(e,t,`mdLinkText`);if(n)return{from:n.from,to:n.to,href:n.mark.attrs.href}}function Or(e){return Sr({key:Er,selector:`.md-link`,preventDefault:!0,findHitAt:(e,t)=>{let n=Dr(e,t);return n?{from:n.from,to:n.to,payload:n.href}:void 0},onClick:(t,n)=>e({href:t,event:n})})}function kr(){return typeof window>`u`?!1:window.matchMedia(`(prefers-color-scheme: dark)`).matches}const Ar=/^(?:www\.|mobile\.)?(?:twitter\.com|x\.com)$/i,jr=/\/status(?:es)?\/(\d+)/;function Mr(e){let t;try{t=new URL(e)}catch{return}if(Ar.test(t.hostname))return jr.exec(t.pathname)?.[1]}const Nr=e=>{let t=Mr(e);if(t)return{key:`tweet:${t}`,render:()=>{let e=kr()?`dark`:`light`,n=document.createElement(`iframe`);return n.src=`https://platform.twitter.com/embed/Tweet.html?id=${t}&theme=${e}&dnt=true`,n.title=`Tweet`,n.className=`md-embed md-embed-tweet`,n.dataset.testid=`tweet-embed`,n.loading=`lazy`,n.referrerPolicy=`strict-origin-when-cross-origin`,n.setAttribute(`frameborder`,`0`),Pr(n),n}}};function Pr(e){let t=t=>{if(t.source===e.contentWindow)try{let n=t.data?.[`twttr.embed`]?.params?.[0]?.height;typeof n==`number`&&(e.style.height=`${n}px`)}catch(e){console.warn(`[meowdown] failed to parse tweet resize message:`,e)}};window.addEventListener(`message`,t);let n=new MutationObserver(()=>{e.isConnected||(window.removeEventListener(`message`,t),n.disconnect())});n.observe(document.body,{childList:!0,subtree:!0})}const Fr=/^(?:www\.|m\.)?(?:youtube\.com|youtube-nocookie\.com)$/i,Ir=/^(?:www\.)?youtu\.be$/i,Lr=/^[\w-]{11}$/;function Rr(e){let t;try{t=new URL(e)}catch{return}let n=null;if(Ir.test(t.hostname))n=t.pathname.slice(1);else if(Fr.test(t.hostname)){let[,e,r]=t.pathname.split(`/`);t.pathname===`/watch`?n=t.searchParams.get(`v`):(e===`shorts`||e===`embed`||e===`live`)&&(n=r??null)}if(!n||!Lr.test(n))return;let r=t.searchParams.get(`start`)??t.searchParams.get(`t`),i=r?zr(r):void 0;return{videoId:n,startSeconds:i}}function zr(e){if(/^\d+$/.test(e))return Number(e);let t=/^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(e);if(!(!t||!t[1]&&!t[2]&&!t[3]))return Number(t[1]??0)*3600+Number(t[2]??0)*60+Number(t[3]??0)}const Br=[e=>{let t=Rr(e);if(!t)return;let n=t.startSeconds?`?start=${t.startSeconds}`:``;return{key:`youtube:${t.videoId}:${t.startSeconds??0}`,render:()=>{let e=document.createElement(`iframe`);return e.src=`https://www.youtube-nocookie.com/embed/${t.videoId}${n}`,e.title=`YouTube video`,e.className=`md-embed md-embed-youtube`,e.dataset.testid=`youtube-embed`,e.loading=`lazy`,e.referrerPolicy=`strict-origin-when-cross-origin`,e.setAttribute(`frameborder`,`0`),e.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen`,e.allowFullscreen=!0,e}}},Nr];function Vr(e){for(let t of Br){let n=t(e);if(n)return n}}function Hr(e){return/^https?:\/\//i.test(e)?e:void 0}function Ur(e,t,n){let r=Vr(e);if(r){let e=document.createElement(`span`);return e.className=`md-image-preview md-image-preview-embed`,e.appendChild(r.render()),e}let i=(n.resolveImageUrl??Hr)(e);if(!i)return;let a=document.createElement(`span`);a.className=`md-image-preview md-image-preview-img`,a.dataset.testid=`image-preview`;let o=document.createElement(`img`);return o.src=i,o.alt=t,o.draggable=!1,a.appendChild(o),a}function Wr(e){return t=>{let n=t.attrs,r=document.createElement(`span`);r.className=`md-image-view`;let i=document.createElement(`span`);i.className=`md-image-view-content`,r.appendChild(i);let a=Ur(n.src,n.alt,e);return a&&(a.contentEditable=`false`,r.appendChild(a)),{dom:r,contentDOM:i,ignoreMutation:e=>!i.contains(e.target)}}}function Gr(e){return e?Array.from(e.files).filter(e=>e.type.startsWith(`image/`)):[]}const Kr=e=>{console.error(`[meowdown] failed to save pasted image:`,e)};async function qr(e,t,n,r=Kr,i){let a=i;for(let i of t){let t;try{t=await n(i)}catch(e){r(e,i);continue}if(!t||e.isDestroyed)continue;let o=`![](${t})`,s=a==null?e.state.tr.insertText(o):e.state.tr.insertText(o,a);e.dispatch(s),a!=null&&(a+=o.length)}}function Jr(e){return new _({key:new v(`image-input`),props:{handlePaste:(t,n)=>{let r=Gr(n.clipboardData),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(qr(t,r,i,a),!0)},handleDrop:(t,n)=>{let r=Gr(n.dataTransfer),{onImagePaste:i,onImageSaveError:a}=e;return r.length===0||!i?!1:(qr(t,r,i,a,t.posAtCoords({left:n.clientX,top:n.clientY})?.pos),!0)}}})}function Yr(e={}){return h(u({name:`mdImageView`,constructor:Wr(e)}),g(p(Jr(e)),t.high))}const Xr=new v(`meowdown-image-click`);function Zr(e,t){let n=w(e,t,`mdImageSource`);if(!n)return;let{src:r,alt:i}=n.mark.attrs;return{from:n.from,to:n.to,src:r,alt:i}}function Qr(e){return p(new _({key:Xr,props:{handleClick:(t,n,r)=>{let i=r.target?.closest?.(`.md-image-preview`);if(!i)return!1;let a=i.closest(`.md-image-view`)?.querySelector(`.md-image-view-content`);if(!a)return!1;let o=Zr(t.state,t.posAtDOM(a,0));return o?(e({src:o.src,alt:o.alt,event:r}),!0):!1}}}))}const $r=new v(`meowdown-embed-paste`);function ei(e){let t=e.trim();if(!(!t||/\s/.test(t)))return Vr(t)?t:void 0}function ti(e,t){return e.clipboardData?.getData(`text/plain`)||t.content.textBetween(0,t.content.size,`
3
+ `)}function ni(e,t){let{from:n,to:r}=e.state.selection;e.dispatch(Qe(e.state.tr.insertText(t,n,r)));let i=e.state.tr.insertText(`![](${t})`,n,n+t.length);e.dispatch(Qe(i))}function ri(){return p(new _({key:$r,props:{handlePaste:(e,t,n)=>{let r=e.state.selection.$from.parent;if(!r.inlineContent||r.type.spec.code)return!1;let i=ti(t,n);if(!i)return!1;let a=ei(i);return a?(ni(e,a),!0):!1}}}))}function ii(){return rt().use($e).use(et).use(tt).use(nt,{bullet:`-`,emphasis:`*`,strong:`*`,fence:"`",fences:!0,rule:`-`,ruleRepetition:3,listItemIndent:`one`}).freeze()}const ai=x(ii);function oi(e){return String(ai().processSync(e))}function G(e,t={}){let{nodes:n=un(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=ci(e);i=t,n&&(a=e.slice(n))}let o=li(n,Zt.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const si=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function ci(e){let t=si.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function li(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...K(e,t,n));while(t.nextSibling());return t.parent(),r}function K(e,t,n){switch(t.type.id){case I.ATXHeading1:return[q(e,t,n,1,!1)];case I.ATXHeading2:return[q(e,t,n,2,!1)];case I.ATXHeading3:return[q(e,t,n,3,!1)];case I.ATXHeading4:return[q(e,t,n,4,!1)];case I.ATXHeading5:return[q(e,t,n,5,!1)];case I.ATXHeading6:return[q(e,t,n,6,!1)];case I.SetextHeading1:return[q(e,t,n,1,!0)];case I.SetextHeading2:return[q(e,t,n,2,!0)];case I.Paragraph:return[X(e,t,n)];case I.HTMLBlock:case I.CommentBlock:case I.ProcessingInstructionBlock:return[X(e,t,n)];case I.Blockquote:return[pi(e,t,n)];case I.BulletList:return mi(e,t,n,`bullet`);case I.OrderedList:return mi(e,t,n,`ordered`);case I.FencedCode:case I.CodeBlock:return[gi(e,t,n)];case I.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case I.Table:return[_i(e,t,n)];case I.Task:return[X(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[X(e,t,n)])}}function q(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===I.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===I.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=fi(n.slice(o,s),J(n,o)).trim(),d=i?ui(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function ui(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function J(e,t){let n=e.lastIndexOf(`
4
+ `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function di(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function fi(e,t){return t===0||!e.includes(`
5
+ `)?e:e.split(`
6
+ `).map((e,n)=>n===0?e:di(e,t)).join(`
7
+ `)}function Y(e,t,n){return e.paragraph(fi(t,n))}function X(e,t,n){let r=t.from,i=t.to,a=J(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===I.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,zt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Y(e,o,a)}return Y(e,n.slice(r,i),a)}function pi(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===I.QuoteMark)continue;r.push(...K(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function mi(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===I.ListItem&&i.push(hi(e,t,n,r));while(t.nextSibling());t.parent()}return i}function hi(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==I.ListMark&&u==null&&(u=J(n,t.from)),t.type.id===I.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}l=J(n,t.to);continue}if(r===`bullet`&&t.type.id===I.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===I.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}zt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Y(e,c,J(n,r)));continue}i.push(...K(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1;return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function gi(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case I.CodeInfo:r=n.slice(t.from,t.to);break;case I.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function _i(e,t,n){let r=0;if(t.firstChild()){do t.type.id===I.TableDelimiter&&(r=vi(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===I.TableHeader?i.push(yi(e,t,n,!0,r)):a===I.TableRow&&i.push(yi(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function vi(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function yi(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===I.TableDelimiter,r=0;do if(t.type.id===I.TableDelimiter)r++;else if(t.type.id===I.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}const bi=new v(`meowdown-html-paste`);function xi(){return p(new _({key:bi,props:{transformPastedHTML:(e,t)=>{if(e.includes(`data-pm-slice`))return e;let n=t.state.selection.$from.parent;if(!n.inlineContent||n.type.spec.code)return e;let r=oi(e);if(!r.trim())return e;let i=G(r,{nodes:mn(t.state.schema)}),a=Ae.fromSchema(t.state.schema),o=document.createElement(`div`);return o.append(a.serializeFragment(i.content)),o.innerHTML}}}))}function Z(e,t={}){let n=new Ti;return t.frontmatter&&Si(e.attrs.frontmatter,n),Ei(e,n),n.finish()}function Si(e,t){e!==null&&(t.write(`---`),t.write(`
4
8
  `),e!==``&&(t.write(e),t.write(`
5
- `)),t.write(`---`),t.closeBlock())}const ni=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function ri(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){q(e,t);let i=n.level===1?`=`:`-`;t.write(`
6
- `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(ni[n.level]??`# `),q(e,t),t.closeBlock()}var ii=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
9
+ `)),t.write(`---`),t.closeBlock())}const Ci=[``,`# `,`## `,`### `,`#### `,`##### `,`###### `];function wi(e,t){let n=e.attrs,r=n.setextUnderline;if(r!=null&&e.content.size>0&&n.level<=2){$(e,t);let i=n.level===1?`=`:`-`;t.write(`
10
+ `+i.repeat(Math.max(1,r))),t.closeBlock();return}t.write(Ci[n.level]??`# `),$(e,t),t.closeBlock()}var Ti=class{constructor(){this.parts=[],this.linePrefix=``,this.pendingFirst=null,this.atLineStart=!0,this.deferredBlankPrefix=null}write(e){if(e===``)return;if(this.emitDeferredBlankLine(),this.atLineStart&&=(this.parts.push(this.pendingFirst??this.linePrefix),this.pendingFirst=null,!1),!e.includes(`
7
11
  `)){this.parts.push(e);return}let t=e.split(`
8
12
  `);for(let e=0;e<t.length;e++)e>0&&this.parts.push(`
9
13
  `,this.linePrefix),t[e]!==``&&this.parts.push(t[e])}closeBlock(){this.atLineStart&&this.pendingFirst!==null&&(this.emitDeferredBlankLine(),this.parts.push(this.pendingFirst.trimEnd()),this.pendingFirst=null,this.atLineStart=!1),this.atLineStart||this.parts.push(`
10
14
  `),this.atLineStart=!0,this.deferredBlankPrefix=this.linePrefix}suppressBlank(){this.deferredBlankPrefix=null}withPrefix(e,t,n){let r=this.linePrefix,i=this.pendingFirst;if(this.linePrefix=r+e,t!==null){let e=i??r;this.pendingFirst=e+t}n(),this.linePrefix=r,this.pendingFirst=t===null?i:null}finish(){return this.parts.join(``).replace(/\s+$/,``)+`
11
15
  `}emitDeferredBlankLine(){let e=this.deferredBlankPrefix;e!==null&&(this.parts.push(e.trimEnd(),`
12
- `),this.deferredBlankPrefix=null)}};function ai(e,t){switch(e.type.name){case`doc`:K(e,t);return;case`paragraph`:q(e,t),t.closeBlock();return;case`heading`:ri(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>K(e,t)),t.closeBlock();return;case`list`:ci(e,t,si(e));return;case`codeBlock`:li(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`table`:ui(e,t);return;case`text`:e.text&&t.write(e.text);return}}function K(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),ai(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=oi(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),ci(e.child(r),t,s);i=o}}function oi(e,t,n){for(let r=t;r<n;r++)if(!si(e.child(r)))return!1;return!0}function si(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function q(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function ci(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=Math.min(Math.max(r.markerGap??1,1),4),c=`${r.kind===`ordered`?`${r.order??1}${a}`:i}${` `.repeat(s)}`,l=r.kind===`task`?`${c}[${r.checked?o:` `}] `:c,u=` `.repeat(c.length);t.withPrefix(u,l,()=>K(e,t,n)),t.closeBlock()}function li(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(An(r,2)+1);t.write(i),n&&t.write(n),t.write(`
16
+ `),this.deferredBlankPrefix=null)}};function Ei(e,t){switch(e.type.name){case`doc`:Q(e,t);return;case`paragraph`:$(e,t),t.closeBlock();return;case`heading`:wi(e,t);return;case`blockquote`:t.withPrefix(`> `,`> `,()=>Q(e,t)),t.closeBlock();return;case`list`:ki(e,t,Oi(e));return;case`codeBlock`:Ai(e,t);return;case`horizontalRule`:{let{marker:n}=e.attrs;t.write(n||`---`),t.closeBlock();return}case`table`:ji(e,t);return;case`text`:e.text&&t.write(e.text);return}}function Q(e,t,n=!1){let r=e.childCount,i=0;for(;i<r;){let a=e.child(i);if(a.type.name!==`list`){n&&i>0&&t.suppressBlank(),Ei(a,t),i++;continue}let o=i+1;for(;o<r&&e.child(o).type.name===`list`;)o++;let s=Di(e,i,o);for(let r=i;r<o;r++)(r===i?n&&i>0:s)&&t.suppressBlank(),ki(e.child(r),t,s);i=o}}function Di(e,t,n){for(let r=t;r<n;r++)if(!Oi(e.child(r)))return!1;return!0}function Oi(e){let t=e.childCount;for(let n=0;n<t;n++){let t=e.child(n);if(t.type.name!==`list`&&!(t.type.name===`paragraph`&&n===0))return!1}return!0}function $(e,t){let n=e.childCount;for(let r=0;r<n;r++){let n=e.child(r);n.isText&&n.text&&t.write(n.text)}}function ki(e,t,n){let r=e.attrs,i=r.marker===`*`||r.marker===`+`?r.marker:`-`,a=r.marker===`)`?`)`:`.`,o=r.taskMarker===`X`?`X`:`x`,s=Math.min(Math.max(r.markerGap??1,1),4),c=`${r.kind===`ordered`?`${r.order??1}${a}`:i}${` `.repeat(s)}`,l=r.kind===`task`?`${c}[${r.checked?o:` `}] `:c,u=` `.repeat(c.length);t.withPrefix(u,l,()=>Q(e,t,n)),t.closeBlock()}function Ai(e,t){let n=e.attrs.language||``,r=e.textContent,i="`".repeat(zn(r,2)+1);t.write(i),n&&t.write(n),t.write(`
13
17
  `),r&&(t.write(r),t.write(`
14
- `)),t.write(i),t.closeBlock()}function ui(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(di(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(J(s,i)),t.write(`
18
+ `)),t.write(i),t.closeBlock()}function ji(e,t){let n=e.childCount;if(n===0)return;let r=[],i=0,a=-1;for(let t=0;t<n;t++){let n=e.child(t),o=[],s=!1;for(let e=0;e<n.childCount;e++){let t=n.child(e);t.type.name===`tableHeaderCell`&&(s=!0),o.push(Ni(t))}s&&a<0&&(a=t),o.length>i&&(i=o.length),r.push(o)}if(i===0)return;let o=`| `+Array(i).fill(`---`).join(` | `)+` |`,s=a>=0?r[a]:Array(i).fill(``);t.write(Mi(s,i)),t.write(`
15
19
  `),t.write(o);for(let e=0;e<n;e++)e!==a&&(t.write(`
16
- `),t.write(J(r[e],i)));t.closeBlock()}function J(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function di(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
20
+ `),t.write(Mi(r[e],i)));t.closeBlock()}function Mi(e,t){let n=`|`;for(let r=0;r<t;r++)n+=` `+(e[r]??``)+` |`;return n}function Ni(e){let t=e.textContent.trim();return!t.includes(`|`)&&!t.includes(`
17
21
  `)?t:t.replaceAll(`|`,String.raw`\|`).replaceAll(`
18
- `,` `)}function fi(e,t={}){let{nodes:n=nn(),frontmatter:r=!1}=t,i,a=e;if(r){let[t,n]=mi(e);i=t,n&&(a=e.slice(n))}let o=hi(n,Gt.parse(a).cursor(),a);return n.doc(i===void 0?{}:{frontmatter:i},o)}const pi=/^---[ \t]*\r?\n([\s\S]*?\n)?---[ \t]*(?:\r?\n|$)/;function mi(e){let t=pi.exec(e);return t?[(t[1]??``).replace(/\r?\n$/,``),t[0].length]:[]}function hi(e,t,n){let r=[];if(!t.firstChild())return r;do r.push(...Y(e,t,n));while(t.nextSibling());return t.parent(),r}function Y(e,t,n){switch(t.type.id){case I.ATXHeading1:return[X(e,t,n,1,!1)];case I.ATXHeading2:return[X(e,t,n,2,!1)];case I.ATXHeading3:return[X(e,t,n,3,!1)];case I.ATXHeading4:return[X(e,t,n,4,!1)];case I.ATXHeading5:return[X(e,t,n,5,!1)];case I.ATXHeading6:return[X(e,t,n,6,!1)];case I.SetextHeading1:return[X(e,t,n,1,!0)];case I.SetextHeading2:return[X(e,t,n,2,!0)];case I.Paragraph:return[$(e,t,n)];case I.HTMLBlock:case I.CommentBlock:case I.ProcessingInstructionBlock:return[$(e,t,n)];case I.Blockquote:return[yi(e,t,n)];case I.BulletList:return bi(e,t,n,`bullet`);case I.OrderedList:return bi(e,t,n,`ordered`);case I.FencedCode:case I.CodeBlock:return[Si(e,t,n)];case I.HorizontalRule:{let r=n.slice(t.from,t.to).trimEnd();return[e.horizontalRule({marker:r===`---`?null:r})]}case I.Table:return[Ci(e,t,n)];case I.Task:return[$(e,t,n)];default:return n.slice(t.from,t.to).trim()===``?[]:(console.warn(`[meowdown] unsupported lezer block "${t.type.name}"`),[$(e,t,n)])}}function X(e,t,n,r,i){let a=t.from,o=t.from,s=t.to,c=-1,l=-1;if(t.firstChild()){t.type.id===I.HeaderMark&&t.from===a&&(o=t.to);let e=-1,n=-1,r=-1;do e=t.type.id,n=t.from,r=t.to;while(t.nextSibling());e===I.HeaderMark&&n>o&&(s=n,c=n,l=r),t.parent()}let u=vi(n.slice(o,s),Z(n,o)).trim(),d=i?gi(n,c,l)||1:null;return e.heading({level:r,setextUnderline:d},u)}function gi(e,t,n){if(t<0)return 0;let r=0;for(let i=t;i<n;i++){let t=e.charCodeAt(i);(t===61||t===45)&&r++}return r}function Z(e,t){let n=e.lastIndexOf(`
19
- `,t-1)+1,r=0;for(let i=n;i<t;i++)r+=e.charCodeAt(i)===9?4-r%4:1;return r}function _i(e,t){let n=0,r=0;for(;r<e.length&&n<t;){let t=e.charCodeAt(r);if(t===32)n+=1;else if(t===9)n+=4-n%4;else break;r++}return e.slice(r)}function vi(e,t){return t===0||!e.includes(`
20
- `)?e:e.split(`
21
- `).map((e,n)=>n===0?e:_i(e,t)).join(`
22
- `)}function Q(e,t,n){return e.paragraph(vi(t,n))}function $(e,t,n){let r=t.from,i=t.to,a=Z(n,r);if(t.firstChild()){let o=``,s=r;do t.type.id===I.QuoteMark&&(o+=n.slice(s,t.from),s=t.to,Nt(n.charCodeAt(s))&&(s+=1));while(t.nextSibling());return t.parent(),o+=n.slice(s,i),Q(e,o,a)}return Q(e,n.slice(r,i),a)}function yi(e,t,n){let r=[];if(t.firstChild()){do{if(t.type.id===I.QuoteMark)continue;r.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}return e.blockquote(r)}function bi(e,t,n,r){let i=[];if(t.firstChild()){do t.type.id===I.ListItem&&i.push(xi(e,t,n,r));while(t.nextSibling());t.parent()}return i}function xi(e,t,n,r){let i=[],a,o,s,c,l,u;if(t.firstChild()){do{if(t.type.id!==I.ListMark&&u==null&&(u=Z(n,t.from)),t.type.id===I.ListMark){if(r===`ordered`){let e=n.charCodeAt(t.to-1);e===41?c=`)`:e===46&&(c=`.`);let r=Number.parseInt(n.slice(t.from,t.to),10);s=Number.isFinite(r)?r:1}else{let e=n.charCodeAt(t.from);c=e===42?`*`:e===43?`+`:`-`}l=Z(n,t.to);continue}if(r===`bullet`&&t.type.id===I.Task){let r=t.from,s=t.to;if(a=!1,t.firstChild()){if(t.type.id===I.TaskMarker){let e=n.charCodeAt(t.from+1);e===120?(a=!0,o=`x`):e===88&&(a=!0,o=`X`),r=t.to}t.parent()}Nt(n.charCodeAt(r))&&(r+=1);let c=n.slice(r,s);i.push(Q(e,c,Z(n,r)));continue}i.push(...Y(e,t,n))}while(t.nextSibling());t.parent()}let d=u!=null&&l!=null?u-l:1;return e.list({kind:a==null?r:`task`,order:r===`ordered`?s??1:null,checked:a??!1,collapsed:!1,marker:c,taskMarker:o,markerGap:d>=2&&d<=4?d:1},i)}function Si(e,t,n){let r=``,i=``;if(t.firstChild()){do switch(t.type.id){case I.CodeInfo:r=n.slice(t.from,t.to);break;case I.CodeText:i+=n.slice(t.from,t.to);break}while(t.nextSibling());t.parent()}return e.codeBlock({language:r},i)}function Ci(e,t,n){let r=0;if(t.firstChild()){do t.type.id===I.TableDelimiter&&(r=wi(n.slice(t.from,t.to)));while(t.nextSibling());t.parent()}let i=[];if(t.firstChild()){do{let a=t.type.id;a===I.TableHeader?i.push(Ti(e,t,n,!0,r)):a===I.TableRow&&i.push(Ti(e,t,n,!1,r))}while(t.nextSibling());t.parent()}return e.table(i)}function wi(e){return e.split(`|`).filter(e=>e.trim()!==``).length}function Ti(e,t,n,r,i){let a=Array(i).fill(``);if(t.firstChild()){let e=t.type.id===I.TableDelimiter,r=0;do if(t.type.id===I.TableDelimiter)r++;else if(t.type.id===I.TableCell){let o=r-+!!e;o>=0&&o<i&&(a[o]=n.slice(t.from,t.to).trim().replaceAll(String.raw`\|`,`|`))}while(t.nextSibling());t.parent()}let o=a.map(t=>{let n=e.paragraph(t);return r?e.tableHeaderCell(n):e.tableCell(n)});return e.tableRow(o)}function Ei(e){return e.replace(/\n+$/u,``)}function Di(e){return/^[\s>]*$/u.test(e)}function Oi(e){return e.split(`
23
- `).filter(e=>!Di(e))}function ki(e,t={}){let n=ei(fi(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Ei(n)===Ei(e))return`exact`;let r=Oi(e),i=Oi(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{Zr as EDITOR_KEY_BINDINGS,e as Priority,ki as checkRoundTrip,$r as codeBlockLanguages,Xr as defineBulletAfterHeading,fr as defineEditorExtension,Jr as defineEmbedPaste,Br as defineImage,Ur as defineImageClickHandler,yr as defineLinkClickHandler,it as defineMarkMode,Qe as definePlaceholder,$e as defineReadonly,gr as defineWikilinkClickHandler,ei as docToMarkdown,fi as markdownToDoc,se as withPriority};
22
+ `,` `)}const Pi=new v(`meowdown-markdown-copy`);function Fi(){return p(new _({key:Pi,props:{clipboardTextSerializer:(e,t)=>{let n=e.content,r;try{r=t.state.schema.topNodeType.createAndFill(void 0,n)??void 0}catch{r=void 0}return r?Z(r).replace(/\n+$/,``):n.textBetween(0,n.size,`
23
+ `,`
24
+ `)}}}))}const Ii=(e,t)=>{let{$from:n,empty:r}=e.selection;if(!r||n.depth!==1||n.index(0)!==0||n.parent.type.name!==`heading`||n.parentOffset!==n.parent.content.size)return!1;if(t){let r=te(e.schema,`list`),i=te(e.schema,`paragraph`),a=r.create({kind:`bullet`},i.create()),o=n.after(),s=e.tr.insert(o,a);s.setSelection(y.create(s.doc,o+2)),t(s.scrollIntoView())}return!0};function Li(){return g(c({Enter:Ii}),t.high)}const Ri={"Mod-b":`Bold`,"Mod-i":`Italic`,"Mod-e":`Inline code`,"Mod-Shift-x":`Strikethrough`,"Mod-1":`Heading 1`,"Mod-2":`Heading 2`,"Mod-3":`Heading 3`,"Mod-4":`Heading 4`,"Mod-5":`Heading 5`,"Mod-6":`Heading 6`},zi=new Set([`MscGen`,`Xù`,`MsGenny`,`Angular Template`,`Brainfuck`,`Esper`,`Oz`,`Factor`,`Squirrel`,`Yacas`,`mIRC`,`FCL`,`ECL`,`MUMPS`,`Pig`,`Asterisk`,`Z80`]),Bi=ye.map(e=>e.name).filter(e=>!zi.has(e)).map(e=>({label:e,value:e.toLowerCase()})).concat({label:`Plain text`,value:``}).sort((e,t)=>e.label.localeCompare(t.label));function Vi(e){return e.replace(/\n+$/u,``)}function Hi(e){return/^[\s>]*$/u.test(e)}function Ui(e){return e.split(`
25
+ `).filter(e=>!Hi(e))}function Wi(e,t={}){let n=Z(G(e,{frontmatter:t.frontmatter}),{frontmatter:t.frontmatter});if(Vi(n)===Vi(e))return`exact`;let r=Ui(e),i=Ui(n);return r.length===i.length&&r.every((e,t)=>e.trimEnd()===i[t].trimEnd())?`normalizing`:`lossy`}export{Ri as EDITOR_KEY_BINDINGS,e as Priority,Wi as checkRoundTrip,Bi as codeBlockLanguages,Li as defineBulletAfterHeading,xr as defineEditorExtension,ri as defineEmbedPaste,xi as defineHTMLPaste,Yr as defineImage,Qr as defineImageClickHandler,Or as defineLinkClickHandler,ut as defineMarkMode,Fi as defineMarkdownCopy,it as definePlaceholder,at as defineReadonly,Tr as defineWikilinkClickHandler,Z as docToMarkdown,G as markdownToDoc,se as withPriority};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/core",
3
3
  "type": "module",
4
- "version": "0.18.0",
4
+ "version": "0.20.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,7 +28,12 @@
28
28
  "@prosekit/extensions": "^0.17.5-beta.7",
29
29
  "@prosekit/pm": "^0.1.19-beta.0",
30
30
  "prosemirror-flat-list": "^0.6.0",
31
- "prosemirror-highlight": "^0.15.2"
31
+ "prosemirror-highlight": "^0.15.2",
32
+ "rehype-parse": "^9.0.1",
33
+ "rehype-remark": "^10.0.1",
34
+ "remark-gfm": "^4.0.1",
35
+ "remark-stringify": "^11.0.0",
36
+ "unified": "^11.0.5"
32
37
  },
33
38
  "devDependencies": {
34
39
  "@ocavue/tsconfig": "^0.7.1",